package br.com.sendmail.modelo;

import java.io.Serializable;
import java.util.Properties;

/**
 * 29/11/2012 - ContaEmail.java 
 * Elton Souza - eltonds88@gmail.com
 * Classe que representa uma conta de email (SMTP)
 * 
 */
public class ContaEmail implements Serializable {

	private static final long serialVersionUID = 1L;
	public static final String XML_ELEMENT_NAME = "email";
	public static final String PORT_NUMBER = "25";

	private String nomeConta;
	private String smtp;
	private String usuario;
	private String senha;
	private String fromEmail;
	private String fromNome;
	private String copyTo;
	private String porta;
	private String localhost;
	private boolean usaAutenticacao = false;
	private boolean debug;

	private Properties propriedades;

	/**
	 	* Construtor de uma conta de email
	 	* @param nomeConta	O nome com o qual a conta sera identificada nas classes que usarem a API
	 	* @param smtp		O Host smtp para envio do email
	 	* @param usuario	O nome de usuario para autenticacao
	 	* @param senha		A senha para autenticacao
	 	* @param fromEmail	O endereco de email FROM
	 	* @param fromNome	O nome do campo FROM
	* @param copyTo Endereco de email que devem ser enviadas copias dos emails enviados por essa conta
	* @param porta Porta usada para envio de email (default eh a porta 25)
	* @param localhost Nome do servidor enviado no comando HELO
	* @param debug Se deve ou nao efetuar debug do envio do email
	 	*/
	public ContaEmail(String nomeConta, String smtp, String usuario, String senha,
			String fromEmail, String fromNome, String copyTo, String porta, 
			String localhost, boolean debug) {

		super();

		this.nomeConta = nomeConta;
		this.smtp = smtp;
		this.usuario = usuario;
		this.senha = senha;
		this.fromEmail = fromEmail;
		this.fromNome = fromNome;
		this.copyTo = copyTo;
		this.porta = porta;
		this.debug = debug;

		if(senha != null && !senha.equals("")) {
			this.usaAutenticacao = true;
		}

		propriedades = new Properties();
		propriedades.setProperty("mail.transport.protocol", "smtp");
		propriedades.setProperty("mail.host", smtp);
		propriedades.setProperty("mail.smtp.auth", usaAutenticacao ? "true" : "false");
		propriedades.setProperty("mail.smtp.port", porta);

		if(localhost != null) {
			propriedades.setProperty("mail.smtp.localhost", localhost);
			this.localhost = localhost;
		}

	}

	public String getSmtp() {
		return smtp;
	}

	public String getUsuario() {
		return usuario;
	}

	public String getSenha() {
		return senha;
	}

	public boolean isUsaAutenticacao() {
		return usaAutenticacao;
	}

	public String getFromEmail() {
		return fromEmail;
	}

	public String getFromNome() {
		return fromNome;
	}

	public String getNomeConta() {
		return nomeConta;
	}

	public Properties getPropriedades() {
		return propriedades;
	}

	public String getCopyTo() {
		return copyTo;
	}

	public String getPorta() {
		return porta;
	}

	public String getLocalhost() {
		return localhost;
	}

	public boolean isDebug() {
		return debug;
	}

}
